package de.nak.terminumfrageapp.dao;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import de.nak.terminumfrageapp.model.Benutzer;

/**
 * 
 * @description Data Access Object fuer @link Benutzer
 * @author Cornelia Kugler, Inga Brinkmann, Tim Danker
 */
public class BenutzerDAO {
	/** Hibernate session factory. */
	private SessionFactory sessionFactory;

	public void setSessionFactory(SessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
	}

	/**
	 * 
	 * @description identifizierendes Attribut.
	 * @param id
	 * @return einen einzelnen Benutzer
	 *        
	 */
	public Benutzer laden(Long id) {
		Session currentSession = sessionFactory.getCurrentSession();
		return (Benutzer) currentSession.get(Benutzer.class, id);
	}

	/**
	 * 
	 * @description speichert einen einzelnen Benutzer
	 * @param Benutzer
	 * 
	 */
	public Benutzer speichern(Benutzer benutzer) {

		Session currentSession = sessionFactory.getCurrentSession();
		currentSession.save(benutzer);
		return benutzer;
	}

	/**
	 * 
	 * @description laedt einen einzelnden Benutzer, wenn die uebergebene
	 * 				Email und Passwort korrekt sind.
	 * @param email, passwort
	 * @return einen einzelnen Benutzer
	 */
	public Long anmelden(String email, String passwort) {
		Session currentSession = sessionFactory.getCurrentSession();
		// Query, die fuer eine Emailadresse und einem Passwort die BenutzerID ermittelt
		Query query = currentSession
				.createQuery("Select id from Benutzer b where b.email='"
						+ email + "' and b.passwort='" + passwort + "'");

		return (Long) query.uniqueResult();
	}

}